python raw_input

        条件判断中,会用raw_input()读取用户的输入,这样可以自己输入,程序运行的更有意思

1
2
3
4
5
birth = raw_input('birth: ')
if birth < 2000:
print '00前'
else:
print '00后'

        输入1982,结果却显示00后,这么简单的判断python为什么会出错?

        当然不是python的问题,在python的交互式命令下打印birth

1
2
3
4
5
6
>>> birth
'1982'
>>> '1982' < 2000
False
>>> 1982 < 2000
True

        原因找到了!原来raw_input()读取的内容永远以字符串形式返回,把字符串和整数比较就不回得到期待的结果,必须先用int()把字符串转换为想要的整型

1
birth = int(raw_input('birth: '))

        再次运行,就可以得到正确的结果。但是,如果输入abc又会得到一个错误信息

1
2
3
Traceback (most recent call last):
...
ValueError: invalid literal for int() with base 10: 'abc'

        原来int()发现一个字符串并不是合法的数字时就会报错,程序就退出了。